Глава
24
Технология
Web Distributed Data Exchange
Web Distributed
Data Exchange (WDDX) — это новая технология, основанная на базе расширенного
языка разметки XML (Extensible Markup Language) и представленная корпорацией
Allaire. Применение модели WDDX облегчает компаниям обмен структурированными
данными между Web-приложениями. WDDX дает компаниям возможность создать "Web
Syndicate Networks" (Сетевые Web-синдикаты), где содержимое и коммерческие
активы любого Web-сайта могут быть представлены как услуги другим Web-сайтам.
Эта технология делает возможными появление и развитие новых видов бизнеса в
Web и увеличивает способность к взаимодействию между различными прикладными
платформами.
В простейшей
своей форме WDDX может использоваться для обмена данными без необходимости непосредственного
применения XML. Это позволяет разработчикам легко создавать приложения типа
"браузер-сервер" для связки данных, подобные традиционным системам
клиент-сервер, автономным Web-приложениям и распределенным приложениям типа
"сервер-сервер". Наибольшие возможности открываются при использовании
технологии для объединения приложений в так называемые "синдикаты".
С помощью WDDX Web-сайт, построенный на основе Perl, может легко обмениваться
содержимым баз данных и представить все операции и процедуры на Web-сайте, созданном
с помощью платформы типа ColdFusion, ASP или других серверов Web-приложений.
"WDDX
обеспечивает богатую основу для объединения в "синдикаты", — сказал
Джереми Эллэйр (Jeremy Allaire), вице-президент по стратегии технологии, в настоящий
момент занимающий пост технического директора корпорации Macromedia. — Поскольку
тысячи организаций используют Web, и новые компании появляются вокруг Web бизнес-модели,
жизненно важно, чтобы приложения, разработанные для поддержки on-line бизнеса,
могли бы легко управлять активами приложения других компаний, независимо от
платформы, на которой они были созданы. Через такую способность к взаимодействию
Web станет основой для новых бизнес-моделей, основанных на сетевых "синдикатах"".
"WDDX
решает серьезнейшие проблемы, связанные с обменом данными между различными средами
Web-программирования, — сказал Г. Хуссейн Чиной (G. Hussain Chinoy), CEO и главный
информационный менеджер компании Granularity Information Architecture, Inc.
— С помощью WDDX мы легко можем создавать приложения для электронной коммерции
и EDI-систем, использующих любую платформу сервера приложения или инструмент
разработки, будь то ColdFusion, ASP, Perl или Java, и знать, что наш вклад может
управляться любым другим разработчиком на любой другой платформе. WDDX открывает
дверь прямо в мир языков программирования."
Распределение
и совместимость платформ
WDDX — это
бесплатная, открытая технология, доступная в виде комплекта для разработки обеспечения
(SDK) на спонсируемом корпорацией Allaire Web-сайте WDDX.org (OpenWDDX.org),
созданном, чтобы облегчить постоянное развитие и распространение WDDX. WDDX
SDK доступен для любой платформы, которая поддерживает XML и популярные языки
Web-программирования. SDK включает в себя библиотеки, образец кода, справочные
материалы и документацию. И Web-сайт, и SDK были созданы, чтобы сделать возможным
взаимодействие между Web-приложениями, и способствовать появлению новых бизнес-моделей
на основе объединенных Web-сетей.
"WDDX
решает целый ряд проблем, знакомых опытным разработчикам Web-приложений, таких
как: распределение приложений, хранение комплексных данных и обмен данными при
использовании различных языков программирования, — сказал Бен Арчибальд (Ben
Archibald), основатель компании ChangeMedia. — В ChangeMedia мы поняли захватывающую
эффективность разработки путем хранения комплексных объектов данных в родственных
таблицах или простых файлах. Используя WDDX, мы можем избежать традиционного
анализа при повышении мобильности информации между SQL-платформами."
Синтаксис:
<CFWDDX ACTION
= "CFML2WDDX | WDDX2CFML | CFML2-JS | WDDX2JS" INPUT = "Inputdata"
OUTPUT = "ResultVariableName"
TOPLEVELVMIABLE
= "TopLevelVariableNameforJavaScript" USETIMEZONEINFO = "Yes
| No"
VALIDATE = "Yes
| No">
В табл. 24.1
представлено описание атрибутов тега <CFWDDX>.
Таблица
24.1. Описание атрибутов тега <CFWDDX>
Атрибут |
Описание |
||
ACTION |
Действие. Возможные
значения:
|
||
INPUT |
Значение, представленное
для обработки". Обязательный атрибут |
||
OUTPUT |
Наименование
переменной, которой присваивается результат выполнения действия. Обязательный
атрибут для действия WDDX2CFML, во всех остальных действиях при отсутствии
определения данного атрибута результат выполнения тега будет выведен
в поток HTML |
||
TOPLEVELVARIABLE |
Наименование
объекта JavaScript, создаваемого определяемым процессом. Обязательный
атрибут только для действий CFML2 JS И WDDX2 JS |
||
USETIMEZONEINFO |
Индикатор принятия
во внимание информации часового пояса. Возможные значения: • Yes — да (по
умолчанию); • No — нет. Необязательный атрибут |
||
VALIDATE |
Индикатор выполнения
проверки ошибок. Возможные значения: • Yes— да; •
No — нет (по умолчанию). Необязательный
атрибут |
||
Идея WDDX
состоит в том, чтобы преобразовать (сериализовать) любую стандартную структуру
данных: целое число, строку, массив, запрос и т. д. — в представление в формате
XML, соответствующее тому или иному определению типов документов. Затем эти
данные можно переслать по любому протоколу связи, способному передавать документы
XML: FTP, HTTP,
SMTP и т.
п. В свою очередь, данные могут быть обратно преобразованы (десериализованы)
из формата WDDX в исходную структуру. При этом типы преобразованных данных остаются
неизменными, если вы сериализуете запрос или массив в пакет WDDX, то при обратном
преобразовании полученные данные примут тип запроса или массива соответственно.
Например:
<HTML>
<HEAD>
<TITLE>WDDX Query</TITLE>
</HEAD>
<BODY>
< ! --- Создаем
запрос --- >
<CFQUERY
NAME="QueryTour" DATASOURCE="#application. dsnt"> SELECT
Name_tou, NumLandingPlaces_tou,
Time_tou, CostAdult_tou
FROM Tour </CFQUERY>
< ! --- Сериализация данных из CFML- в WDDX-формат --- >
<CFWDDX ACTION
= "CEML2WDDX"
INPUT = #QueryTour#
OUTPUT = "varWDDX">
<i>WDDX XML packet :</i><br>
<table width="100%">
<tr><td><CFOUTPUT>#varWDDX#</CFOUTPUT></td></tr>
</table>
< ! --- Десериализация из WDDX в CFML --- >
<CFWDDX ACTION
= "WDDX2CEML"
INPUT = #varWDDX#
OUTPUT = "DeQueryTour">
<br><i>Deserializing
WDDX packet :
<CFTABLE
QUERY="DeQueryTour" COLHEADERS="Yes"
COLSPACING="0" HEADERLINES="1">
<CFCOL HEADER
= "<b>Name tour</b>" WIDTH = "27" ALIGN = "Left"
TEXT = "#Name__tou#">
<CFCOL HEADER
= "<b>Places</b>" WIDTH = "5"
ALIGN = "Right"
TEXT = "#NumLandingPlaces_tou#">
<CFCOL HEADER = "<b>Time</b>" WIDTH = "9"
ALIGN = "Right"
TEXT = "#Time_tou#">
<CFCOL HEADER
= "<b>Adults</b>" WIDTH = "9" ALIGN = "Right"
TEXT = "#CostAdult_tou#">
</CFTABLE> </BODY> </HTML>
В приведенном примере создается запрос QueryTour, впоследствии сериали-зованный в пакет WDDX, и затем уже десериализованный в объект запроса DeQueryTour.
Таким же
образом вы можете преобразовывать данные в JavaScript как из CFML, так и из
WDDX, используя при этом с тегом <CFWDDX> такие действия, Как CFML2JS
и WDDX2JS.
WDDX SDK обеспечивает модули для JavaScript l.x, ColdFusion, COM, Perl и Java. С модулем COM, WDDX может использоваться внутри Active Server Pages, Visual Basic, Delphi, Java, PowerBuilder, C++ и Microsoft Office.